/**
 * 根据判断条件对数组中满足条件的元素的个数进行统计
 *
 * @param {any[]} arr 数组
 * @param {(item: any) => boolean} judge 判断条件，如果返回 true 则表示当前遍历到的元素满足条件，计数器加 1，默认值 `() => true`
 * @returns {number} 数组中满足条件的元素的个数
 */
export const count = (arr: any[], judge: (item: any) => boolean = () => true): number => {
  let cnt = 0
  for (const item of arr) {
    if (judge(item)) cnt++
  }
  return cnt
}

export type CountType = typeof count
